package lesson13;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

/**练习:根据指定目录和关键词来判断是否文件名和内容中是否包含关键词，然后进行删除操作
 * @author tongchen
 * @create 2023-02-15 16:55
 */
public class ExerAndTest3 {
    public static void main(String[] args) throws FileNotFoundException {
        //输入指定路径
        System.out.println("请输入你要选择的路径");
        Scanner scan=new Scanner(System.in);
        String rootFile=scan.nextLine();
        //检查有效性
        if(rootFile==null||rootFile.equals("")){
            System.out.println("目录路径不能为空");
            return;
        }
        //输入关键字
        System.out.println("请输入关键字");
        String keyWord=scan.next();
        if(keyWord==null||keyWord.equals("")){
            System.out.println("输入的关键字为空");
            return;
        }
        //查看关键字的有效性
        //创建目录文件
        File file=new File(rootFile);
        //查看文件是否存在
        if(!file.exists()){
            System.out.println("该文件不存在");
            return;
        }
        //查看是否是目录结构
        if(!file.isDirectory()){
            System.out.println("该文件并不是一个目录");
            return;
        }
        //通过scan方法进行扫描
        scan(file,keyWord);


    }

    private static void scan(File file, String keyWord) throws FileNotFoundException {
        //遍历目录下的所有文件
        File[] files = file.listFiles();
        //判断文件数组的有效性
        if(files==null||files.length==0){
            System.out.println("该文件下不存在任何子文件");
            return;
        }
        for (File file1:files) {
            //判断是目录还是文件
            if(file1.isDirectory()){
                //如果是文件则进行递归扫描
                scan(file1, keyWord);
            }
            //是文件则进行检验
            else {
                checkOut(file1,keyWord);
            }
        }
    }

    private static void checkOut(File file1, String keyWord) throws FileNotFoundException {
        //查看名字中是否包含关键字
        if(file1.getName().contains(keyWord)){
            System.out.println("是否删除"+file1.getName()+"Y/N");
            Scanner scan=new Scanner(System.in);
            String flag=scan.next();
            //如果删除则进行删除操作
            if(flag.toLowerCase().equals("y")){
                file1.delete();
                System.out.println("删除成功");

            }
            //否则跳过即可
            return;
        }
        try(FileInputStream inputStream=new FileInputStream(file1)) {
            //查看内容上是否包括关键字
            Scanner scanner=new Scanner(inputStream,"utf-8");
            //创建StringBuilder对象
            StringBuilder stringBuilder=new StringBuilder();
            //将数据进行叠加
            //检查是否存在
            while(scanner.hasNextLine()){
                System.out.println("内容叠加中");
                stringBuilder.append(scanner.nextLine());
            }
            //最后进行查找
            if (stringBuilder.indexOf(keyWord)!=-1){
                System.out.println("是否删除"+file1.getName()+"Y/N");
                Scanner scan=new Scanner(System.in);
                String flag=scan.next();
                //如果删除则进行删除操作
                if(flag.toLowerCase().equals("y")){
                    file1.delete();
                    System.out.println("删除成功");
                    return;
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}
